<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Actividad_lst( $this );

	class Actividad_lst extends Lst
	{
	function Actividad_lst( &$oModule )
		{
			$this->Lst( $oModule );
			// Obtiene de su filtro los parametros que necesita para armar el query
			$this->aFields['ncTipoAgenda'] = getParam( 'ncTipoAgenda' );
		}
	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'E':
					$this->aShowColumns = array( 'Nombre' );
					break;
				case 'L':
					$this->aShowColumns = array( 'bEstrella', 'ncRotulo', 'Nombre', 'Fecha' );
					if ( $this->aFields['aRotulo'] ) $this->aShowColumns[] = 'nOrden';
					break;
			}
		}
	function initialize()
		{
			$this->oFiltro = $this->oModule->loadClass( 'Actividad_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
			//$this->aFields['aRotulo'] = is_array( getParam( 'aRotulo' ) )  ? implode(",", getParam( 'aRotulo' ) ): getParam( 'aRotulo' );
			
			$this->setTitle ( "Actividad" );
			$this->setSummary( "Esta tabla contiene el listado de Actividades" );
			if ( $this->aFields['ncTipoAgenda'] )
			{
				$oTab =& $this->setIndex( INDEX_USER, TAB_BOTTOM, 'ncCategoriaActividad' );
				$cSql = "SELECT ncCategoriaActividad, cdCategoriaActividad FROM gcCategoriaActividad WHERE  ncTipoAgenda =" . $this->aFields['ncTipoAgenda'];
				$oTab->setMatrixMultilanguage( $this->oDatabase->getMatrix($cSql) );
			}
			$this->addColumnStar ( 'bEstrella', MODIFICAR_ACTIVIDAD_PORTAL, 'ncActividad', 'bEstrella' );
			$this->addColumnTag( 'ncRotulo', ACTUALIZAR_TAG_ACTIVIDAD_PORTAL, 'ncActividad', 'gtActividadRotulo', $this->oDatabase->getKeyArray('SELECT ncRotulo, cdRotulo FROM gtRotuloActividad' ) );
			$this->addColumnMultilanguage ( 'Nombre', 'cdActividad', 'es' );
			$this->addColumnMultilanguage ( 'Descripcion', 'cDescripcion', 'es' );
			$this->addColumnAction( 'Establecimiento', VER_ESTABLECIMIENTO, 'ncEstablecimiento', 'cdEstablecimiento' );
			$this->addColumn( 'Fecha', '');
			$this->addColumn( 'Desde', 'dDesde'); // Lo crea despues de procesar fecha !!
			$this->addColumn( 'Hasta', 'dHasta'); // Lo crea despues de procesar fecha !!
			$this->addColumn( 'Horario', '');
			$this->addColumn( 'Entrada', 'cEntrada');
			$this->addColumnMultilanguage ( 'Categoria', 'cdCategoriaActividad');
			$this->addColumnMultilanguage ( 'Organizador', 'cdOrganizacion');
			$this->addColumnOrder ( 'nOrden', MODIFICAR_ORDEN_ACTIVIDAD, 'ncActividad,ncRotulo', 'ARo.nOrden' );
			$this->setColumnAction ( 'Nombre', VER_ACTIVIDAD_PORTAL, 'ncActividad', 'cdActividad' );

			if ( $this->aFields['aRotulo'] ) {
				$aDatos = $this->oDatabase->getMatrix("SELECT ncActividad, ncRotulo, nOrden FROM gtActividadRotulo WHERE ncRotulo = " . $this->aFields['aRotulo'] . " ORDER BY nOrden ASC" );
				for( $nIndex = count($aDatos ); $nIndex > 0 ; $nIndex--) {
					if ( $aDatos[$nIndex -1][nOrden] != $nIndex ) {
						$this->oDatabase->update( 'gtActividadRotulo', 'nOrden', $nIndex, 'WHERE', 'ncRotulo', $aDatos[$nIndex -1][ncRotulo], 'ncActividad', $aDatos[$nIndex -1][ncActividad]);
						//echo $aDatos[$nIndex -1][nOrden] . ' ' . $nIndex ;
					}
				}
				$this->oPaging->setDefaultOrderBy('ARo.nOrden', 'ASC');
			}
			$this->oPaging->setDefaultOrderBy( 'Act.ncActividad', false );
		}
	function makeColumn ( $aRow, $cField )
		{
			switch( $cField )
			{
				case 'Fecha':
					$aFechas = $this->oDatabase->getArray("SELECT min(dDesde) as dDesde , max(dHasta) as dHasta FROM gtActividadTiempo WHERE ncActividad= " . $aRow[ncActividad] 	);
					$aRow[dDesde] = $aFechas[dDesde];
					$aRow[dHasta] = $aFechas[dHasta];
					$cReturn = mostrarPeriodo( $aFechas[dDesde] ,$aFechas[dHasta] , 'es') ;
					break;
				case 'Horario':
					$aHorarios = $this->oDatabase->getMatrix("SELECT cDias, nTipoHorario, nHoraDesde, nHoraHasta, nTipoRepeticion, dHasta, dDesde, nFrecuencia FROM gtActividadTiempo WHERE ncActividad= " . $aRow[ncActividad] . " AND nTipoRepeticion = 4 ORDER BY cDias, nTipoHorario, nHoraDesde, nHoraHasta "	);
					$cReturn = transalteHorario( $aHorarios , 'es') ;
					break;
				default:
					return false;
				break;
			}
			return $cReturn;
		}
	function query()
		{
			// Arma el Query
				$cSql = "SELECT * 
								FROM gtActividad as Act
								LEFT JOIN gtEstablecimiento as Est
									ON Est.ncEstablecimiento = Act.ncEstablecimiento
								LEFT JOIN atOrganizacion as Org
									ON Org.ncOrganizacion = Act.ncOrganizacion
								LEFT JOIN gcCategoriaActividad as CAg
									ON Act.ncCategoriaActividad = CAg.ncCategoriaActividad";
			// Arma el Filtro de la Consulta
			$this->oWhere->addArray ( $this->oFiltro->getFilterdArray('Act') );
			$this->oWhere->replace( 'Act.aRotulo', 'ARo.ncRotulo', '', 'gtActividadRotulo as ARo', 'ARo.ncActividad= Act.ncActividad'); 
			return $cSql . $this->oWhere->make();
		}
	function makeListActions()
		{
			$cParametroRegistro =  $this->getFieldString();
			$this->addListAction ( AGREGAR_ACTIVIDAD_PORTAL, $cParametroRegistro, 'I' , VENTANA_SECUNDARIA);
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro = "ncActividad=" . $aRow["ncActividad"] ;
			if ( $this->aFields["ncTipoAgenda"] ) $cParametroRegistro .= "&ncTipoAgenda=" . $this->aFields["ncTipoAgenda"];
			if ( $this->aFields["ncCategoriaActividad"] ) $cParametroRegistro .= "&ncCategoriaActividad=" . $this->aFields["ncCategoriaActividad"];
			$this->addRowAction ( DUPLICAR_ACTIVIDAD_PORTAL, $cParametroRegistro, '', VENTANA_SECUNDARIA );
			$this->addRowAction ( MODIFICAR_ACTIVIDAD_PORTAL, $cParametroRegistro, '', VENTANA_SECUNDARIA );
			$this->addRowAction ( ELIMINAR_ACTIVIDAD_PORTAL ,  $cParametroRegistro );
		}
	}
?>